=-==--------------=-----=======*#%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%@
===========================++#%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%
+======+=++++++++++++++***####%%%%%%%%%%@@%%@@@@@@@@@%%%%%%%%%%%%%%%%
+++++++++++******++***################%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%
*+****+++**###*****************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####***************#**###****#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%###*********#*******************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*+**######**####***********++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************+=+***#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********######**#**********+*********########%%%%%%%%%####%%%%%%%%%%%
*##***##*####*#########*###**#****####**#######%%%%%####***#%%%%%%%%%
%%##%%%##%%%####%%%##%%%##%%#############################**+*#######%
####***##*#******##****#######*################%%%#########**########
#####%%%#%%#%##%%%%%%%##%%%##%%%%%%%%%%%%%%%####%%%%%%%%%%###########
%%%%%%%%%#*#%#%%%%%%%%%%%%%%%###%%%%%%%%%%%%####**###%%%%##%%%%%%%%#%
%%%%%%%%#*#%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%###%###++*#########%######%%
%%%%%###*#####%%%%%%##%%%%%%%%%%%%%#*#%##%#%%##**+#%%%##############%
%######*#########%%###################%#%###%##*+*##################%
#####***##**###########################%%####%#*+*%%%###############%
###****##***############################****%%%#**####%%############%
###**#####################################***#%%####################%
##*############%%%%########################**+#%%%####%#*####%%%%%%#%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%@@%%%%%@%##%%%%%%%%@@@